/**
 *转换树形结构
 * @param {*} arr  传入的数组
 * @returns 经过处理过的tree数组
 * 核心逻辑 平铺传树形 寻找父节点的过程 就是通过pid去匹配id的过程
 * 1 遍历原数组 以数组中的每一项的id作为key 每一项本身作为value形成一个对象map(方便查找)
 * 2 遍历原数组 通过pid 去匹配id 弱国匹配上了 就把当前项添加到匹配项的children属性中
 *    如果没有发生匹配 则代表当前项本身就是最外层的节点 它没有父节点 直接把它push到treeList中
 */
function transTree (arr) {
  const treeList = []
  // 逻辑处理

  const map = {}
  arr.forEach(item => {
    if (!item.children) item.children = []
    map[item.id] = item // 添加对应的映射关系
  })
  arr.forEach(item => {
    if (map[item.pid]) {
      map[item.pid].children.push(item)
    } else {
      treeList.push(item)
    }
  })
  return treeList
}
export default transTree
